Model Driven Architecture (MDA) is a framework for software development established by the Object Management Group (OMG), which presently maintains the standard for the Unified Modeling Language (UML), an object-oriented modeling language that includes graphical notation for classes, their attributes, and their relationships to one another (e.g., inheritance, association, and composition). As to both MDA and UML, see generally Model-Driven Software Development, IBM Systems Journal, Volume 45, Number 3 (2006).
The MDA framework generally involves three major steps. The first step is to build a model of the software system at a high level of abstraction so that the model is independent of any implementation technology. Typically this model is called a Platform Independent Model (PIM) and is written in a standard, well-defined modeling language such as UML. The second step is to transform the PIM into one or more Platform Specific Models (PSMs), each of which is tailored to a specific system in terms of the implementation constructs that are available in one specific implementation technology, e.g. a database model, an Enterprise JavaBean (EJB) model, etc. The third step is to transform a PSM to code—often code that supports the creation of a graphical user interface (GUI), such as Java.
Because a PSM fits its technology very closely, the transformation in the third step might be rather trivial in some instances, with the complex step being the second step in which a PIM is transformed to a PSM. Further an MDA transformation is typically executed by a software tool (e.g., a transformation engine), including both the transformation from a PIM to a PSM and the transformation from a PSM to code. Thus, one might think of the modeling that creates the PIM as very high-level programming.
Model Wizard is a software tool designed by Cisco that is based on Eclipse and that provides utilities for manipulating models created using modeling tools such as IBM's Rational Software Modeler, which can create UML 2.0 models.
AndroMDA is a software tool for code generation, originated by Matthias Bohlen, which takes a UML model as input and generates source code as output. Via a series of template files, AndroMDA is capable of producing source code in multiple programming and markup languages from a UML model, though, by default, the programming language is Java. More specifically, the AndroMDA code generator is a generic code generation engine that hosts code modules (called cartridges) which do the actual code generation. In turn, an AndroMDA cartridge is a collection of source code template files and Java helper classes (called Metafacades) packaged into a .JAR file. At the present time cartridges exist for WebService (e.g., the output can be WSDL files) and XMLSchema (e.g., the output can be XSD files), in addition to various Java platforms (e.g., the output can be EJB files). Other MDA transformation engines also use cartridge modules.
Muse is a software tool maintained by the Apache Software Foundation that implements the Web Services Distributed Management (WSDM): Management Using Web Services (MUWS) specification and creates WSDM-compliant interfaces from WSDL and XSD files. Those interfaces can then be used to generate Java source code. The WSDM MUWS specification is maintained by the Organization for the Advancement of Structured Information Standards (OASIS). The WSDM MUWS specification facilitates the distributed management (e.g., dynamic discovery and automated redirection based on resource availability) of interoperable machine-to-machine interaction over a network whose resources can be heterogeneous.